﻿<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="CollectionViewSourceSpikes.App"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             xmlns:localControls="clr-namespace:CollectionViewSourceSpikes.Controls"
             >
    <Application.Resources>

    	<ControlTemplate x:Key="ValidationToolTipTemplate">
    		<Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0">
    			<Grid.RenderTransform>
    				<TranslateTransform x:Name="xform" X="-25"/>
    			</Grid.RenderTransform>
    			<VisualStateManager.VisualStateGroups>
    				<VisualStateGroup x:Name="OpenStates">
    					<VisualStateGroup.Transitions>
    						<VisualTransition GeneratedDuration="0"/>
    						<VisualTransition GeneratedDuration="0:0:0.2" To="Open">
    							<Storyboard>
    								<DoubleAnimation Duration="0:0:0.2" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform">
    									<DoubleAnimation.EasingFunction>
    										<BackEase Amplitude=".3" EasingMode="EaseOut"/>
    									</DoubleAnimation.EasingFunction>
    								</DoubleAnimation>
    								<DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root"/>
    							</Storyboard>
    						</VisualTransition>
    					</VisualStateGroup.Transitions>
    					<VisualState x:Name="Closed">
    						<Storyboard>
    							<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root"/>
    						</Storyboard>
    					</VisualState>
    					<VisualState x:Name="Open">
    						<Storyboard>
    							<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="X" Storyboard.TargetName="xform"/>
    							<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Root"/>
    						</Storyboard>
    					</VisualState>
    				</VisualStateGroup>
    			</VisualStateManager.VisualStateGroups>
    			<Border Background="#052A2E31" CornerRadius="5" Margin="4,4,-4,-4"/>
    			<Border Background="#152A2E31" CornerRadius="4" Margin="3,3,-3,-3"/>
    			<Border Background="#252A2E31" CornerRadius="3" Margin="2,2,-2,-2"/>
    			<Border Background="#352A2E31" CornerRadius="2" Margin="1,1,-1,-1"/>
    			<Border Background="#FFDC000C" CornerRadius="2"/>
    			<Border CornerRadius="2">
    				<TextBlock Foreground="White" MaxWidth="250" Margin="8,4,8,4" TextWrapping="Wrap" Text="{Binding (Validation.Errors)[0].ErrorContent}" UseLayoutRounding="false"/>
    			</Border>
    		</Grid>
    	</ControlTemplate>
    	<Style x:Key="ListBoxStyle1" TargetType="ListBox">
    		<Setter Property="Padding" Value="1"/>
    		<Setter Property="Background" Value="#FFFFFFFF"/>
    		<Setter Property="Foreground" Value="#FF000000"/>
    		<Setter Property="HorizontalContentAlignment" Value="Left"/>
    		<Setter Property="VerticalContentAlignment" Value="Top"/>
    		<Setter Property="IsTabStop" Value="False"/>
    		<Setter Property="BorderThickness" Value="1"/>
    		<Setter Property="TabNavigation" Value="Once"/>
    		<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
    		<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    		<Setter Property="BorderBrush">
    			<Setter.Value>
    				<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
    					<GradientStop Color="#FFA3AEB9" Offset="0"/>
    					<GradientStop Color="#FF8399A9" Offset="0.375"/>
    					<GradientStop Color="#FF718597" Offset="0.375"/>
    					<GradientStop Color="#FF617584" Offset="1"/>
    				</LinearGradientBrush>
    			</Setter.Value>
    		</Setter>
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="ListBox">
    					<Grid>
    						<VisualStateManager.VisualStateGroups>
    							<VisualStateGroup x:Name="ValidationStates">
    								<VisualState x:Name="Valid"/>
    								<VisualState x:Name="InvalidUnfocused">
    									<Storyboard>
    										<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" 
                                                Storyboard.TargetName="ValidationErrorElement">
    											<DiscreteObjectKeyFrame KeyTime="0">
    												<DiscreteObjectKeyFrame.Value>
    													<Visibility>Visible</Visibility>
    												</DiscreteObjectKeyFrame.Value>
    											</DiscreteObjectKeyFrame>
    										</ObjectAnimationUsingKeyFrames>
    									</Storyboard>
    								</VisualState>
    								<VisualState x:Name="InvalidFocused">
    									<Storyboard>
    										<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" 
                                                Storyboard.TargetName="ValidationErrorElement">
    											<DiscreteObjectKeyFrame KeyTime="0">
    												<DiscreteObjectKeyFrame.Value>
    													<Visibility>Visible</Visibility>
    												</DiscreteObjectKeyFrame.Value>
    											</DiscreteObjectKeyFrame>
    										</ObjectAnimationUsingKeyFrames>
    										<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" 
                                                Storyboard.TargetName="validationTooltip">
    											<DiscreteObjectKeyFrame KeyTime="0">
    												<DiscreteObjectKeyFrame.Value>
    													<sys:Boolean>True</sys:Boolean>
    												</DiscreteObjectKeyFrame.Value>
    											</DiscreteObjectKeyFrame>
    										</ObjectAnimationUsingKeyFrames>
    									</Storyboard>
    								</VisualState>
    							</VisualStateGroup>
    						</VisualStateManager.VisualStateGroups>
    						<Border BorderBrush="{TemplateBinding BorderBrush}" 
                                BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2">
    							<ScrollViewer x:Name="ScrollViewer" BorderBrush="Transparent" 
                                    BorderThickness="0" Background="{TemplateBinding Background}" 
                                    Padding="{TemplateBinding Padding}" TabNavigation="{TemplateBinding TabNavigation}">
    								<ItemsPresenter/>
    							</ScrollViewer>
    						</Border>
    						<Border x:Name="ValidationErrorElement" BorderBrush="#FFDB000C" 
                                BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2" Visibility="Collapsed">
    							<ToolTipService.ToolTip>
    								<ToolTip x:Name="validationTooltip" 
                                        DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
                                        Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}" 
                                        Template="{StaticResource ValidationToolTipTemplate}">
    									<ToolTip.Triggers>
    										<EventTrigger RoutedEvent="Canvas.Loaded">
    											<BeginStoryboard>
    												<Storyboard>
    													<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible" Storyboard.TargetName="validationTooltip">
    														<DiscreteObjectKeyFrame KeyTime="0">
    															<DiscreteObjectKeyFrame.Value>
    																<sys:Boolean>true</sys:Boolean>
    															</DiscreteObjectKeyFrame.Value>
    														</DiscreteObjectKeyFrame>
    													</ObjectAnimationUsingKeyFrames>
    												</Storyboard>
    											</BeginStoryboard>
    										</EventTrigger>
    									</ToolTip.Triggers>
    								</ToolTip>
    							</ToolTipService.ToolTip>
    							<Grid Background="Transparent" HorizontalAlignment="Right" Height="10" Margin="0,-4,-4,0" VerticalAlignment="Top" Width="10">
    								<Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z" Fill="#FFDC000C" Margin="-1,3,0,0"/>
    								<Path Data="M 0,0 L2,0 L 8,6 L8,8" Fill="#ffffff" Margin="-1,3,0,0"/>
    							</Grid>
    						</Border>
    					</Grid>
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>
    	<Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem">
    		<Setter Property="Padding" Value="3"/>
    		<Setter Property="HorizontalContentAlignment" Value="Left"/>
    		<Setter Property="VerticalContentAlignment" Value="Top"/>
    		<Setter Property="Background" Value="Transparent"/>
    		<Setter Property="BorderThickness" Value="1"/>
    		<Setter Property="TabNavigation" Value="Local"/>
    		<Setter Property="Template">
    			<Setter.Value>
    				<ControlTemplate TargetType="ListBoxItem">
    					<Grid Background="{TemplateBinding Background}">
    						<VisualStateManager.VisualStateGroups>
    							<VisualStateGroup x:Name="CommonStates">
    								<VisualState x:Name="Normal"/>
    								<VisualState x:Name="MouseOver">
    									<Storyboard>
    										<DoubleAnimation Duration="0" To=".35" Storyboard.TargetProperty="Opacity" 
                                                Storyboard.TargetName="fillColor"/>
    									</Storyboard>
    								</VisualState>
    								<VisualState x:Name="Disabled">
    									<Storyboard>
    										<DoubleAnimation Duration="0" To=".55" Storyboard.TargetProperty="Opacity" 
                                                Storyboard.TargetName="contentPresenter"/>
    									</Storyboard>
    								</VisualState>
    							</VisualStateGroup>
    							<VisualStateGroup x:Name="SelectionStates">
    								<VisualState x:Name="Unselected"/>
    								<VisualState x:Name="Selected">
    									<Storyboard>
    										<DoubleAnimation Duration="0" To=".75" Storyboard.TargetProperty="Opacity" 
                                                Storyboard.TargetName="fillColor2"/>
    									</Storyboard>
    								</VisualState>
    							</VisualStateGroup>
    							<VisualStateGroup x:Name="FocusStates">
    								<VisualState x:Name="Focused">
    									<Storyboard>
    										<ObjectAnimationUsingKeyFrames Duration="0" 
                                                Storyboard.TargetProperty="Visibility" 
                                                Storyboard.TargetName="FocusVisualElement">
    											<DiscreteObjectKeyFrame KeyTime="0">
    												<DiscreteObjectKeyFrame.Value>
    													<Visibility>Visible</Visibility>
    												</DiscreteObjectKeyFrame.Value>
    											</DiscreteObjectKeyFrame>
    										</ObjectAnimationUsingKeyFrames>
    									</Storyboard>
    								</VisualState>
    								<VisualState x:Name="Unfocused"/>
    							</VisualStateGroup>
    						</VisualStateManager.VisualStateGroups>
    						<Rectangle x:Name="fillColor" Fill="#FFBADDE9" IsHitTestVisible="False" 
                                Opacity="0" RadiusY="1" RadiusX="1"/>
    						<Rectangle x:Name="fillColor2" Fill="#FFBADDE9" IsHitTestVisible="False" 
                                Opacity="0" RadiusY="1" RadiusX="1"/>
    						<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" 
                                Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                Margin="{TemplateBinding Padding}"/>
    						<Rectangle x:Name="FocusVisualElement" RadiusY="1" RadiusX="1" Stroke="#FF6DBDD1" 
                                StrokeThickness="1" Visibility="Collapsed"/>
    					</Grid>
    				</ControlTemplate>
    			</Setter.Value>
    		</Setter>
    	</Style>

    </Application.Resources>
</Application>
